﻿using System;

namespace JudgmentApplication
{
    /* 
     判断结构要求程序员指定一个或多个要评估或测试的条件，
     以及条件为真时要执行的语句（必需的）和条件为假时要执行的语句（可选的）。
     C# 提供了以下类型的判断语句:
        if          	一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。
        if...else       一个 if 语句 后可跟一个可选的 else 语句，else 语句在布尔表达式为假时执行。
        嵌套if          您可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。
        switch          一个 switch 语句允许测试一个变量等于多个值时的情况。
        嵌套switch      您可以在一个 switch 语句内使用另一个 switch 语句。
     */

    class Operator1
    {
        /* 
         一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。
         语法:
            if(boolean_expression)
            {

            }
         */
        static void op1()
        {
            /* 局部变量定义 */
            int a = 10;

            /* 使用 if 语句检查布尔条件 */
            if (a < 20)
            {
                /* 如果条件为真，则输出下面的语句 */
                Console.WriteLine("a 小于 20");
            }
            Console.WriteLine("a 的值是 {0}", a);
            Console.ReadLine();
        }
    }

    class Operator2
    {
        /* 
         一个 if 语句 后可跟一个可选的 else 语句，else 语句在布尔表达式为假时执行。
         语法：
            if(boolean_expression)
            {
            
            }
            else
            {
            
            }
         */
        static void op1()
        {
            /* 局部变量定义 */
            int a = 100;

            /* 检查布尔条件 */
            if (a < 20)
            {
                /* 如果条件为真，则输出下面的语句 */
                Console.WriteLine("a 小于 20");
            }
            else
            {
                /* 如果条件为假，则输出下面的语句 */
                Console.WriteLine("a 大于 20");
            }
            Console.WriteLine("a 的值是 {0}", a);
            Console.ReadLine();
        }
        /*
         一个 if 语句后可跟一个可选的 else if...else 语句，这可用于测试多种条件。
            当使用 if...else if...else 语句时，以下几点需要注意：
            一个 if 后可跟零个或一个 else，它必须在任何一个 else if 之后。
            一个 if 后可跟零个或多个 else if，它们必须在 else 之前。
            一旦某个 else if 匹配成功，其他的 else if 或 else 将不会被测试。
         语法：
            if(boolean_expression 1)
            {

            }
            else if(boolean_expression 2)
            {

            }
            else
            {

            }
         */
        static void op2()
        {
            /* 局部变量定义 */
            int a = 100;

            /* 检查布尔条件 */
            if (a == 10)
            {
                /* 如果 if 条件为真，则输出下面的语句 */
                Console.WriteLine("a 的值是 10");
            }
            else if (a == 20)
            {
                /* 如果 else if 条件为真，则输出下面的语句 */
                Console.WriteLine("a 的值是 20");
            }
            else if (a == 30)
            {
                /* 如果 else if 条件为真，则输出下面的语句 */
                Console.WriteLine("a 的值是 30");
            }
            else
            {
                /* 如果上面条件都不为真，则输出下面的语句 */
                Console.WriteLine("没有匹配的值");
            }
            Console.WriteLine("a 的准确值是 {0}", a);
            Console.ReadLine();
        }
    }

    class Operator3
    {
        /* 
         在 C# 中，嵌套 if-else 语句是合法的，这意味着您可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。
         语法：
             if (boolean_expression 1)
             {
                if (boolean_expression 2)
                {

                }
             }
         */
        static void op1()
        {
            //* 局部变量定义 */
            int a = 100;
            int b = 200;

            /* 检查布尔条件 */
            if (a == 100)
            {
                /* 如果条件为真，则检查下面的条件 */
                if (b == 200)
                {
                    /* 如果条件为真，则输出下面的语句 */
                    Console.WriteLine("a 的值是 100，且 b 的值是 200");
                }
            }
            Console.WriteLine("a 的准确值是 {0}", a);
            Console.WriteLine("b 的准确值是 {0}", b);
            Console.ReadLine();
        }
    }

    class Operator4
    {
        /*
         一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case，且被测试的变量会对每个 switch case 进行检查。
         语法：
            switch (expression)
            {
                case constant-expression :
                    statement(s);
                    break;
                case constant-expression :
                    statement(s);
                    break;
                default : // 可选
                    statement(s);
                    break;
            }
         */
        static void op1()
        {
            int day = 4;
            switch (day)
            {
                case 1:
                    Console.WriteLine("Monday");
                    break;
                case 2:
                    Console.WriteLine("Tuesday");
                    break;
                case 3:
                    Console.WriteLine("Wednesday");
                    break;
                case 4:
                    Console.WriteLine("Thursday");
                    break;
                case 5:
                    Console.WriteLine("Friday");
                    break;
                case 6:
                    Console.WriteLine("Saturday");
                    break;
                case 7:
                    Console.WriteLine("Sunday");
                    break;
            }
        }
    }

    class Operator5
    {
        /*
         可以把一个 switch 作为一个外部 switch 的语句序列的一部分，即可以在一个 switch 语句内使用另一个 switch 语句。
         即使内部和外部 switch 的 case 常量包含共同的值，也没有矛盾。
         语法:
            switch (ch1)
            {
                case 'A':
                    printf("这个 A 是外部 switch 的一部分);
                switch (ch2)
                {
                    case 'A':
                        print("这个 A 是内部 switch 的一部分");
                        break;
                    case 'B':
                }
                    break;
                case 'B':
            }
         */
        static void op1()
        {
            int a = 100;
            int b = 200;

            switch (a)
            {
                case 100:
                    Console.WriteLine("这是外部 switch 的一部分");
                    switch (b)
                    {
                        case 200:
                            Console.WriteLine("这是内部 switch 的一部分");
                            break;
                    }
                    break;
            }
            Console.WriteLine("a 的准确值是 {0}", a);
            Console.WriteLine("b 的准确值是 {0}", b);
            Console.ReadLine();
        }
    }
}